home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / perfTuning / ChallengeIO / Disk.perf.disk / graph_bvst < prev    next >
Encoding:
Text File  |  1994-08-02  |  11.1 KB  |  371 lines

  1. #!/bin/sh
  2.  
  3. # Here's the script. It expects a parameter which is the file containing
  4. # the data in the same form you sent the last data in.
  5. # It produces 5 perf.xyz files, 5 graph.xyz and 3 graph.[rwc] files.
  6. # The perf files are the sub tables from the master data, sorted
  7. # into increasing order. The graph files are executable and invoke xgraph
  8. # with the appropriate data (embedded in the script).
  9. # The graph files are invoked by the script.
  10. # The script also puts the tables onto stdout.
  11.  
  12. # Expects one parameter which is the name of the file containing
  13. # the performance data.
  14.  
  15. # On stdout it produces a table of the results - discarding the lowest and
  16. # highest, then averaging the remainder.
  17.  
  18. # Creates graph.dwb, graph.dwt, graph.ewt, graph.ewb, graph.rwb, graph.rwt
  19. #    Which are shell scripts to display the graph of the 5 cases.
  20. # Also leaves perf.dwb, perf.dwt, perf.ewb, perf.ewt, perf.rwb, perf.rwt.
  21. # Also creates graph.br, graph.bw, graph.bc which are shell scripts
  22. #    to display the graphs of read, write, create.
  23.  
  24. # Each graph has an entry 0 0.0 forced in to give an origin. Could be removed.
  25.  
  26. cat <<'EOF' >/usr/tmp/d.awk$$
  27. BEGIN            { cnt = 0; max=0.0; min=1000.1; maxi=0.0; mini=1000.1;
  28.                 ndisks=0; rawefs="?"; async="?"; direct="?";
  29.                 nthrd=0; xfrsz=0; stepsz=0; xfrtyp="?";
  30.                 sr="?"; mbs=0.0; iops=0.0;
  31.             }
  32. /^#TITLE/        { ttl1=$2; ttl2=$3; ttl3=$4; ttl4=$5; ttl5=$6;
  33.             }
  34. / way stripe, step/    { ndisks=$1; stepsz=$6;
  35.                 cnt = 0; max=0.0; min=1000.1; maxi=0.0;
  36.                 mini=1000.1; rawefs="R"; async="?";
  37.                 direct=" "; nthrd=0; xfrsz=0;
  38.                 xfrtyp="?"; sr="?"; mbs=0.0; iops=0.0;
  39.                 if ( ndisks == 84 ) {
  40.                     printf "\n%s %s %s %s %s\n", ttl1, ttl2, ttl3, ttl4, ttl5;
  41.                     printf "  #     #     # R/A/D    #    transfer step  OS R/W seq  MB/sec IOP/sec\n";
  42.                     printf "disks busses LV  E/M  threads   size   size rev  C  rand\n";
  43.                 }
  44.             }
  45. /^$/            {prline();}
  46. /^mkfs/            {rawefs="E";}
  47. /^.usr.disk.sio -V -A/    {nthrd=$4; async="A";
  48.                 if ( $5 == "-D" ) {
  49.                     direct="D";
  50.                 }
  51.             }
  52. /^sequential create/    {prline(); sr="S"; xfrtyp="C"; xfrsz=$4; }
  53. /^sequential write/    {prline(); sr="S"; xfrtyp="W"; xfrsz=$4; }
  54. /^sequential read/    {prline(); sr="S"; xfrtyp="R"; xfrsz=$4; }
  55. /blocks.*KB.*MB.*IO/    {mbs += $8; iops += $11; cnt++;
  56.                 if ( $8 > max ) {
  57.                     max = $8;
  58.                 }
  59.                 if ( $8 < min ) {
  60.                     min = $8;
  61.                 }
  62.                 if ( $11 > maxi ) {
  63.                     maxi = $11;
  64.                 }
  65.                 if ( $11 < mini ) {
  66.                     mini = $11;
  67.                 }
  68.             }
  69.  
  70. #            {}
  71.  
  72. function prline() {
  73.     if ( cnt != 0 ) {
  74.         printf "%4d   %3d    1  %cM%c%c %4d    %6d   %3d  5.2  %c  %3s %6.2f %5.2f\n", ndisks, ndisks/4, rawefs, async, direct, nthrd, xfrsz, stepsz, xfrtyp, sr, (mbs-max-min)/(cnt-2), (iops-maxi-mini)/(cnt-2);
  75.     }
  76.     cnt = 0; max=0.0; min=1000.1; maxi=0.0; mini=1000.1;
  77.     mbs=0.0; iops=0.0;
  78. }
  79.  
  80. END    {
  81.         prline();
  82.     }
  83.  
  84. EOF
  85. sed -e 's/[()]//g' -e 's/^------* /#TITLE /' -e 's/^\(#TITL.*\) -----*$/\1/' $1 | nawk -f /usr/tmp/d.awk$$ |tee /usr/tmp/d.res$$
  86. rm -f /usr/tmp/d.awk$$
  87. #Split into perf.dwb, perf.dwt, perf.ewb, perf.ewt, perf.rwb, perf.rwt.
  88. sed -e '1,/^Reg.*buffer/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.ewt
  89. sed -e '1,/^Reg.*through/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.ewb
  90. sed -e '1,/^Raw.*buffer/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.rwb
  91. sed -e '1,/^Raw.*through/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.rwt
  92. sed -e '1,/^Dir.*buffer/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.dwb
  93. sed -e '1,/^Dir.*through/d' -e '1,2d' -e '/^$/,$d' /usr/tmp/d.res$$|sort -n >perf.dwt
  94. #Start of graph ------------------------------------------------
  95. #Start of write graph ------------------------------------------------
  96. cat <<EOF >graph.bw
  97. #!/bin/sh
  98. exec xgraph -t "Write" -x "# of disks" -y "MBytes/sec" <<EOD
  99. "Direct write buffered"
  100. 0 0.0
  101. EOF
  102. grep '^ .* W ' perf.dwb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.bw
  103. cat <<EOF >>graph.bw
  104.  
  105. "Direct write through"
  106. 0 0.0
  107. EOF
  108. grep '^ .* W ' perf.dwt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.bw
  109. cat <<EOF >>graph.bw
  110.  
  111. "Raw write buffered"
  112. 0 0.0
  113. EOF
  114. grep '^ .* W ' perf.rwb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.bw
  115. cat <<EOF >>graph.bw
  116.  
  117. "Raw write through"
  118. 0 0.0
  119. EOF
  120. grep '^ .* W ' perf.rwt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.bw
  121. cat <<EOF >>graph.bw
  122.  
  123. "EFS write buffered"
  124. 0 0.0
  125. EOF
  126. grep '^ .* W ' perf.ewb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.bw
  127. cat <<EOF >>graph.bw
  128.  
  129. "EFS write through"
  130. 0 0.0
  131. EOF
  132. grep '^ .* W ' perf.ewt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.bw
  133. cat <<EOF >>graph.bw
  134.  
  135. EOD
  136. EOF
  137. chmod 755 graph.bw
  138. ./graph.bw&
  139. #End of Write graph ------------------------------------------------
  140. #Start of Read graph ------------------------------------------------
  141. cat <<EOF >graph.br
  142. #!/bin/sh
  143. exec xgraph -t "Read" -x "# of disks" -y "MBytes/sec" <<EOD
  144. "Direct write buffered"
  145. 0 0.0
  146. EOF
  147. grep '^ .* R ' perf.dwb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.br
  148. cat <<EOF >>graph.br
  149.  
  150. "Direct write through"
  151. 0 0.0
  152. EOF
  153. grep '^ .* R ' perf.dwt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.br
  154. cat <<EOF >>graph.br
  155.  
  156. "Raw write buffered"
  157. 0 0.0
  158. EOF
  159. grep '^ .* R ' perf.rwb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.br
  160. cat <<EOF >>graph.br
  161.  
  162. "Raw write through"
  163. 0 0.0
  164. EOF
  165. grep '^ .* R ' perf.rwt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.br
  166. cat <<EOF >>graph.br
  167.  
  168. "EFS write buffered"
  169. 0 0.0
  170. EOF
  171. grep '^ .* R ' perf.ewb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.br
  172. cat <<EOF >>graph.br
  173.  
  174. "EFS write through"
  175. 0 0.0
  176. EOF
  177. grep '^ .* R ' perf.ewt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.br
  178. cat <<EOF >>graph.br
  179.  
  180. EOD
  181. EOF
  182. chmod 755 graph.br
  183. ./graph.br&
  184. #End of Read graph ------------------------------------------------
  185. #Start of Create graph ------------------------------------------------
  186. cat <<EOF >graph.bc
  187. #!/bin/sh
  188. exec xgraph -t "Create" -x "# of disks" -y "MBytes/sec" <<EOD
  189. "Direct write buffered"
  190. 0 0.0
  191. EOF
  192. grep '^ .* C ' perf.dwb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.bc
  193. cat <<EOF >>graph.bc
  194.  
  195. "Direct write through"
  196. 0 0.0
  197. EOF
  198. grep '^ .* C ' perf.dwt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.bc
  199. cat <<EOF >>graph.bc
  200.  
  201. "EFS write buffered"
  202. 0 0.0
  203. EOF
  204. grep '^ .* C ' perf.ewb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.bc
  205. cat <<EOF >>graph.bc
  206.  
  207. "EFS write through"
  208. 0 0.0
  209. EOF
  210. grep '^ .* C ' perf.ewt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.bc
  211. cat <<EOF >>graph.bc
  212.  
  213. EOD
  214. EOF
  215. chmod 755 graph.bc
  216. ./graph.bc&
  217. #End of Create graph ------------------------------------------------
  218. #Start of dwb graph ------------------------------------------------
  219. cat <<EOF >graph.dwb
  220. #!/bin/sh
  221. exec xgraph -t "Direct Write Buffered" -x "# of disks" -y "MBytes/sec" <<EOD
  222. "Write"
  223. 0 0.0
  224. EOF
  225. grep '^ .* W ' perf.dwb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dwb
  226. cat <<EOF >>graph.dwb
  227.  
  228. "Read"
  229. 0 0.0
  230. EOF
  231. grep '^ .* R ' perf.dwb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dwb
  232. cat <<EOF >>graph.dwb
  233.  
  234. "Create"
  235. 0 0.0
  236. EOF
  237. grep '^ .* C ' perf.dwb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dwb
  238. cat <<EOF >>graph.dwb
  239.  
  240. EOD
  241. EOF
  242. chmod 755 graph.dwb
  243. ./graph.dwb&
  244. #End of dwb graph ------------------------------------------------
  245. #Start of dwt graph ------------------------------------------------
  246. cat <<EOF >graph.dwt
  247. #!/bin/sh
  248. exec xgraph -t "Direct Write Through" -x "# of disks" -y "MBytes/sec" <<EOD
  249. "Write"
  250. 0 0.0
  251. EOF
  252. grep '^ .* W ' perf.dwt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dwt
  253. cat <<EOF >>graph.dwt
  254.  
  255. "Read"
  256. 0 0.0
  257. EOF
  258. grep '^ .* R ' perf.dwt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dwt
  259. cat <<EOF >>graph.dwt
  260.  
  261. "Create"
  262. 0 0.0
  263. EOF
  264. grep '^ .* C ' perf.dwt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.dwt
  265. cat <<EOF >>graph.dwt
  266.  
  267. EOD
  268. EOF
  269. chmod 755 graph.dwt
  270. ./graph.dwt&
  271. #End of dwt graph ------------------------------------------------
  272. #Start of ewb graph ------------------------------------------------
  273. cat <<EOF >graph.ewb
  274. #!/bin/sh
  275. exec xgraph -t "EFS Write buffered" -x "# of disks" -y "MBytes/sec" <<EOD
  276. "Write"
  277. 0 0.0
  278. EOF
  279. grep '^ .* W ' perf.ewb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ewb
  280. cat <<EOF >>graph.ewb
  281.  
  282. "Read"
  283. 0 0.0
  284. EOF
  285. grep '^ .* R ' perf.ewb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ewb
  286. cat <<EOF >>graph.ewb
  287.  
  288. "Create"
  289. 0 0.0
  290. EOF
  291. grep '^ .* C ' perf.ewb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ewb
  292. cat <<EOF >>graph.ewb
  293.  
  294. EOD
  295. EOF
  296. chmod 755 graph.ewb
  297. ./graph.ewb&
  298. #End of ewb graph ------------------------------------------------
  299. #Start of ewt graph ------------------------------------------------
  300. cat <<EOF >graph.ewt
  301. #!/bin/sh
  302. exec xgraph -t "EFS Write through" -x "# of disks" -y "MBytes/sec" <<EOD
  303. "Write"
  304. 0 0.0
  305. EOF
  306. grep '^ .* W ' perf.ewt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ewt
  307. cat <<EOF >>graph.ewt
  308.  
  309. "Read"
  310. 0 0.0
  311. EOF
  312. grep '^ .* R ' perf.ewt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ewt
  313. cat <<EOF >>graph.ewt
  314.  
  315. "Create"
  316. 0 0.0
  317. EOF
  318. grep '^ .* C ' perf.ewt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* C *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.ewt
  319. cat <<EOF >>graph.ewt
  320.  
  321. EOD
  322. EOF
  323. chmod 755 graph.ewt
  324. ./graph.ewt&
  325. #End of ewt graph ------------------------------------------------
  326. #Start of rwt graph ------------------------------------------------
  327. cat <<EOF >graph.rwt
  328. #!/bin/sh
  329. exec xgraph -t "Raw Write Through" -x "# of disks" -y "MBytes/sec" <<EOD
  330. "Write"
  331. 0 0.0
  332. EOF
  333. grep '^ .* W ' perf.rwt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.rwt
  334. cat <<EOF >>graph.rwt
  335.  
  336. "Read"
  337. 0 0.0
  338. EOF
  339. grep '^ .* R ' perf.rwt | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.rwt
  340. cat <<EOF >>graph.rwt
  341.  
  342. EOD
  343. EOF
  344. chmod 755 graph.rwt
  345. ./graph.rwt&
  346. #End of rwt graph ------------------------------------------------
  347. #Start of rwb graph ------------------------------------------------
  348. cat <<EOF >graph.rwb
  349. #!/bin/sh
  350. exec xgraph -t "Raw Write Buffered" -x "# of disks" -y "MBytes/sec" <<EOD
  351. "Write"
  352. 0 0.0
  353. EOF
  354. grep '^ .* W ' perf.rwb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* W *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.rwb
  355. cat <<EOF >>graph.rwb
  356.  
  357. "Read"
  358. 0 0.0
  359. EOF
  360. grep '^ .* R ' perf.rwb | sort -n | sed -e 's/^ *\([0-9][0-9]*\) .* R *S *\([0-9][0-9\.]*\) .*$/\1 \2/' >>graph.rwb
  361. cat <<EOF >>graph.rwb
  362.  
  363. EOD
  364. EOF
  365. chmod 755 graph.rwb
  366. ./graph.rwb&
  367. #End of rwb graph ------------------------------------------------
  368. rm -f /usr/tmp/d.res$$
  369. exit 0
  370.  
  371.